package pe.tnova.library.util.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @author Danielle Delgado
 * 
 */
public class DateUtil {
	
	private DateUtil(){
		
	}
	
	private static SimpleDateFormat formateador = null;
	private static SimpleDateFormat formatoDelTexto = null;

	public static String getFechaActual(DateFormatEnumUtil formato) {
		return getFormatDate(formato.value(),new Date());
	}

	public static String getFechaActual(String formato) {
		return getFormatDate(formato,new Date());
	}

	public static String formatearFecha(DateFormatEnumUtil formato, Date fecha) {
		return getFormatDate(formato.value(),fecha);
	}

	public static String formatearFecha(String formato, Date fecha) {		
		return getFormatDate(formato,fecha);
	}	

	private static String getFormatDate(String formato, Date date) {
		formateador = new SimpleDateFormat(formato);
		return formateador.format(new Date());
	}	

	public static Date deStringADate(DateFormatEnumUtil formato, String fecha)
			throws ParseException {
		return getdeStringDate(formato.value(), fecha);
	}

	public static Date deStringADate(String formato, String fecha) throws ParseException {
		return getdeStringDate(formato, fecha);
	}

	private static Date getdeStringDate(String formato, String date) throws ParseException {
		formatoDelTexto = new SimpleDateFormat(formato);
		return formatoDelTexto.parse(date);
	}
	
	
	public static Calendar deStringACalendar(DateFormatEnumUtil formato,
			String fecha) throws ParseException {
		Date fechaConvertir = deStringADate(formato, fecha);
		Calendar cal = Calendar.getInstance();
		cal.setTime(fechaConvertir);
		return cal;
	}

	public static Calendar deStringACalendar(String formato, String fecha) throws ParseException {
		Date fechaConvertir = deStringADate(formato, fecha);
		Calendar cal = Calendar.getInstance();
		cal.setTime(fechaConvertir);
		return cal;
	}

	public static Calendar deDateACalendar(Date fecha) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(fecha);
		return cal;
	}

}
